home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume27 / dmake / part01 < prev    next >
Encoding:
Text File  |  1992-01-29  |  39.9 KB  |  1,084 lines

  1. Newsgroups: comp.sources.misc
  2. From: dvadura@plg.waterloo.edu (Dennis Vadura)
  3. Subject:  v27i102:  dmake - dmake Version 3.8, Part01/41
  4. Message-ID: <1992Jan28.030857.6532@sparky.imd.sterling.com>
  5. X-Md4-Signature: a495ba7dbb7c50a07b5af938887db2a3
  6. Date: Tue, 28 Jan 1992 03:08:57 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: dvadura@plg.waterloo.edu (Dennis Vadura)
  10. Posting-number: Volume 27, Issue 102
  11. Archive-name: dmake/part01
  12. Environment: Atari-ST, Coherent, Mac, MSDOS, OS/2, UNIX
  13. Supersedes: dmake: Volume 19, Issue 22-58
  14.  
  15. ---- Cut Here and feed the following to sh ----
  16. # This is a shell archive (produced by shar 3.49)
  17. # To extract the files from this archive, save it to a file, remove
  18. # everything above the "!/bin/sh" line above, and type "sh file_name".
  19. #
  20. # made 01/27/1992 22:31 UTC by dvadura@plg
  21. # Source directory /u2/dvadura/src/generic/dmake/src
  22. #
  23. # existing files will NOT be overwritten unless -c is specified
  24. #
  25. # This is part 1 of a multipart archive                                    
  26. # do not concatenate these parts, unpack them in order with /bin/sh        
  27. #
  28. # This shar contains:
  29. # length  mode       name
  30. # ------ ---------- ------------------------------------------
  31. #   8714 -rw-r----- dmake/_install
  32. #   2297 -rw-r----- dmake/alloc.h
  33. #   1762 -rw-r----- dmake/basename.c
  34. #  14085 -rw-r----- dmake/dag.c
  35. #   2705 -rw-r----- dmake/db.h
  36. #    460 -rw-r----- dmake/dbug/README
  37. #   1955 -rw-r----- dmake/dbug/dbug.mk
  38. #    135 -rw-r----- dmake/dbug/dbug/README
  39. #  44504 -rw-r----- dmake/dbug/dbug/dbug.c
  40. #   6259 -rw-r----- dmake/dbug/dbug/dbug.h
  41. #  22625 -rw-r----- dmake/dbug/dbug/dbug.uue
  42. #    106 -rw-r----- dmake/dbug/getwd.c
  43. #   1365 -rw-r----- dmake/dbug/malloc/Makefile
  44. #    369 -rw-r----- dmake/dbug/malloc/_changes
  45. #   4758 -rw-r----- dmake/dbug/malloc/_readme
  46. #   1572 -rw-r----- dmake/dbug/malloc/calloc.c
  47. #   2719 -rw-r----- dmake/dbug/malloc/debug.h
  48. #   3270 -rw-r----- dmake/dbug/malloc/dump.c
  49. #   4604 -rw-r----- dmake/dbug/malloc/free.c
  50. #   2113 -rw-r----- dmake/dbug/malloc/m_init.c
  51. #   2064 -rw-r----- dmake/dbug/malloc/m_perror.c
  52. #   6712 -rw-r----- dmake/dbug/malloc/malloc.3
  53. #  12856 -rw-r----- dmake/dbug/malloc/malloc.c
  54. #   2578 -rw-r----- dmake/dbug/malloc/malloc.h
  55. #   2372 -rw-r----- dmake/dbug/malloc/mallopt.c
  56. #   3596 -rw-r----- dmake/dbug/malloc/memory.c
  57. #   6393 -rw-r----- dmake/dbug/malloc/mlc_chk.c
  58. #   3448 -rw-r----- dmake/dbug/malloc/mlc_chn.c
  59. #      2 -rw-r----- dmake/dbug/malloc/patchlevel
  60. #   4750 -rw-r----- dmake/dbug/malloc/realloc.c
  61. #   9473 -rw-r----- dmake/dbug/malloc/string.c
  62. #  20192 -rw-r----- dmake/dbug/malloc/testmem.c
  63. #   3971 -rw-r----- dmake/dbug/malloc/testmlc.c
  64. #   2807 -rw-r----- dmake/dbug/malloc/tostring.c
  65. #    582 -rw-r----- dmake/dbug/malloc/tostring.h
  66. #  20915 -rw-r----- dmake/dmake.c
  67. #   8214 -rw-r----- dmake/dmake.h
  68. #   5875 -rw-r----- dmake/dmdump.c
  69. #   6772 -rw-r----- dmake/dmstring.c
  70. #  25463 -rw-r----- dmake/expand.c
  71. #   2216 -rw-r----- dmake/extern.h
  72. #   8705 -rw-r----- dmake/function.c
  73. #  14416 -rw-r----- dmake/getinp.c
  74. #   2337 -rw-r----- dmake/hash.c
  75. #   5686 -rw-r----- dmake/imacs.c
  76. #  24141 -rw-r----- dmake/infer.c
  77. #   1822 -rw-r----- dmake/itypes.h
  78. #   1950 -rw-r----- dmake/mac/arlib.c
  79. #   2850 -rw-r----- dmake/mac/bogus.c
  80. #   2976 -rw-r----- dmake/mac/config.h
  81. #   1234 -rw-r----- dmake/mac/config.mk
  82. #   1787 -rw-r----- dmake/mac/dirbrk.c
  83. #   8195 -rw-r----- dmake/mac/directry.c
  84. #   3778 -rw-r----- dmake/mac/dompwmak
  85. #   6935 -rw-r----- dmake/mac/environ.c
  86. #   3810 -rw-r----- dmake/mac/eold.c
  87. #   1780 -rw-r----- dmake/mac/main.c
  88. #   3119 -rw-r----- dmake/mac/make.sh
  89. #   5509 -rw-r----- dmake/mac/public.h
  90. #   1658 -rw-r----- dmake/mac/rmprq.c
  91. #   1989 -rw-r----- dmake/mac/ruletab.c
  92. #    403 -rw-r----- dmake/mac/startup.h
  93. #   3508 -rw-r----- dmake/mac/startup.mk
  94. #    415 -rw-r----- dmake/mac/sysintf.h
  95. #   2283 -rw-r----- dmake/mac/tempnam.c
  96. #   3703 -rw-r----- dmake/mac/tomacfil.c
  97. #   4782 -rw-r----- dmake/macparse.c
  98. #   5188 -rw-r----- dmake/make.bat
  99. #  28699 -rw-r----- dmake/make.c
  100. #   1310 -rw-r----- dmake/make.cmd
  101. #  12374 -rw-r----- dmake/makefile.mk
  102. #   3491 -rw-r----- dmake/makefile
  103. #    228 -rw-r----- dmake/man/README
  104. # 119471 -rw-r----- dmake/man/dmake.nc
  105. #  99797 -rw-r----- dmake/man/dmake.tf
  106. #  76950 -rw-r----- dmake/man/dmake.uue
  107. #   1994 -rw-r----- dmake/msdos/_chdir.c
  108. #   1955 -rw-r----- dmake/msdos/arlib.c
  109. #   2009 -rw-r----- dmake/msdos/bccdos/config.h
  110. #   1400 -rw-r----- dmake/msdos/bccdos/config.mk
  111. #     17 -rw-r----- dmake/msdos/bccdos/lib.rsp
  112. #     17 -rw-r----- dmake/msdos/bccdos/libswp.rsp
  113. #   3397 -rw-r----- dmake/msdos/bccdos/mk.bat
  114. #   3570 -rw-r----- dmake/msdos/bccdos/mkswp.bat
  115. #    635 -rw-r----- dmake/msdos/bccdos/obj.rsp
  116. #    673 -rw-r----- dmake/msdos/bccdos/objswp.rsp
  117. #   5547 -rw-r----- dmake/msdos/bccdos/public.h
  118. #   3831 -rw-r----- dmake/msdos/bccdos/startup.mk
  119. #   1724 -rw-r----- dmake/msdos/bccdos/tempnam.c
  120. #    767 -rw-r----- dmake/msdos/bccdos/utime.c
  121. #   1821 -rw-r----- dmake/msdos/config.mk
  122. #   1785 -rw-r----- dmake/msdos/dirbrk.c
  123. #   1086 -rw-r----- dmake/msdos/dirlib.h
  124. #  37235 -rw-r----- dmake/msdos/exec.asm
  125. #    351 -rw-r----- dmake/msdos/exec.h
  126. #   3671 -rw-r----- dmake/msdos/exec.uue
  127. #   2140 -rw-r----- dmake/msdos/find.c
  128. #   2637 -rw-r----- dmake/msdos/mscdos/config.h
  129. #   2471 -rw-r----- dmake/msdos/mscdos/config.mk
  130. #      1 -rw-r----- dmake/msdos/mscdos/lib.rsp
  131. #      1 -rw-r----- dmake/msdos/mscdos/libswp.rsp
  132. #   3032 -rw-r----- dmake/msdos/mscdos/mk40.bat
  133. #   3194 -rw-r----- dmake/msdos/mscdos/mk40swp.bat
  134. #   3471 -rw-r----- dmake/msdos/mscdos/mk50.bat
  135. #   3647 -rw-r----- dmake/msdos/mscdos/mk50swp.bat
  136. #   3471 -rw-r----- dmake/msdos/mscdos/mk51.bat
  137. #   3647 -rw-r----- dmake/msdos/mscdos/mk51swp.bat
  138. #   2967 -rw-r----- dmake/msdos/mscdos/mk60.bat
  139. #   3126 -rw-r----- dmake/msdos/mscdos/mk60swp.bat
  140. #    593 -rw-r----- dmake/msdos/mscdos/obj.rsp
  141. #    631 -rw-r----- dmake/msdos/mscdos/objswp.rsp
  142. #     49 -rw-r----- dmake/msdos/mscdos/optoff.h
  143. #   5547 -rw-r----- dmake/msdos/mscdos/public.h
  144. #   3828 -rw-r----- dmake/msdos/mscdos/startup.mk
  145. #   1754 -rw-r----- dmake/msdos/mscdos/tempnam.c
  146. #   1649 -rw-r----- dmake/msdos/rmprq.c
  147. #   1960 -rw-r----- dmake/msdos/ruletab.c
  148. #   2811 -rw-r----- dmake/msdos/runargv.c
  149. #  12759 -rw-r----- dmake/msdos/spawn.c
  150. #    392 -rw-r----- dmake/msdos/startup.h
  151. #    417 -rw-r----- dmake/msdos/stdarg.h
  152. #    926 -rw-r----- dmake/msdos/switchar.c
  153. #    420 -rw-r----- dmake/msdos/sysintf.h
  154. #   2009 -rw-r----- dmake/msdos/tccdos/config.h
  155. #   1400 -rw-r----- dmake/msdos/tccdos/config.mk
  156. #     17 -rw-r----- dmake/msdos/tccdos/lib.rsp
  157. #     17 -rw-r----- dmake/msdos/tccdos/libswp.rsp
  158. #   3521 -rw-r----- dmake/msdos/tccdos/mk.bat
  159. #   3698 -rw-r----- dmake/msdos/tccdos/mkswp.bat
  160. #    635 -rw-r----- dmake/msdos/tccdos/obj.rsp
  161. #    673 -rw-r----- dmake/msdos/tccdos/objswp.rsp
  162. #   5547 -rw-r----- dmake/msdos/tccdos/public.h
  163. #   3801 -rw-r----- dmake/msdos/tccdos/startup.mk
  164. #   1724 -rw-r----- dmake/msdos/tccdos/tempnam.c
  165. #    767 -rw-r----- dmake/msdos/tccdos/utime.c
  166. #   1383 -rw-r----- dmake/msdos/tee.c
  167. #   1916 -rw-r----- dmake/msdos/ztcdos/config.h
  168. #   1990 -rw-r----- dmake/msdos/ztcdos/config.mk
  169. #    473 -rw-r----- dmake/msdos/ztcdos/environ.c
  170. #      1 -rw-r----- dmake/msdos/ztcdos/lib.rsp
  171. #      1 -rw-r----- dmake/msdos/ztcdos/libswp.rsp
  172. #   3232 -rw-r----- dmake/msdos/ztcdos/mk.bat
  173. #   3235 -rw-r----- dmake/msdos/ztcdos/mkswp.bat
  174. #    614 -rw-r----- dmake/msdos/ztcdos/obj.rsp
  175. #    626 -rw-r----- dmake/msdos/ztcdos/objswp.rsp
  176. #   5547 -rw-r----- dmake/msdos/ztcdos/public.h
  177. #   3867 -rw-r----- dmake/msdos/ztcdos/startup.mk
  178. #   1738 -rw-r----- dmake/msdos/ztcdos/tempnam.c
  179. #     58 -rw-r----- dmake/namemax.h
  180. #   1738 -rw-r----- dmake/os2/_chdir.c
  181. #   1555 -rw-r----- dmake/os2/config.mk
  182. #     24 -rw-r----- dmake/os2/dmake.bad
  183. #    427 -rw-r----- dmake/os2/dmake.cs
  184. #    121 -rw-r----- dmake/os2/dmake.def
  185. #   2567 -rw-r----- dmake/os2/ibm/config.h
  186. #   2395 -rw-r----- dmake/os2/ibm/config.mk
  187. #   3826 -rw-r----- dmake/os2/ibm/dmake.ini
  188. #     21 -rw-r----- dmake/os2/ibm/lib.rsp
  189. #   3413 -rw-r----- dmake/os2/ibm/mkc2.cmd
  190. #    576 -rw-r----- dmake/os2/ibm/obj.rsp
  191. #     49 -rw-r----- dmake/os2/ibm/optoff.h
  192. #   5541 -rw-r----- dmake/os2/ibm/public.h
  193. #    132 -rw-r----- dmake/os2/ibm/startup.mk
  194. #   1919 -rw-r----- dmake/os2/ibm/tempnam.c
  195. #   2570 -rw-r----- dmake/os2/mscdos/config.h
  196. #   2395 -rw-r----- dmake/os2/mscdos/config.mk
  197. #   3826 -rw-r----- dmake/os2/mscdos/dmake.ini
  198. #     21 -rw-r----- dmake/os2/mscdos/lib.rsp
  199. #   3490 -rw-r----- dmake/os2/mscdos/mk40.cmd
  200. #   3509 -rw-r----- dmake/os2/mscdos/mk50.cmd
  201. #   3509 -rw-r----- dmake/os2/mscdos/mk51.cmd
  202. #   3048 -rw-r----- dmake/os2/mscdos/mk60.cmd
  203. #    576 -rw-r----- dmake/os2/mscdos/obj.rsp
  204. #     49 -rw-r----- dmake/os2/mscdos/optoff.h
  205. #   5541 -rw-r----- dmake/os2/mscdos/public.h
  206. #    132 -rw-r----- dmake/os2/mscdos/startup.mk
  207. #   1919 -rw-r----- dmake/os2/mscdos/tempnam.c
  208. #     49 -rw-r----- dmake/os2/optoff.h
  209. #   2107 -rw-r----- dmake/os2/ruletab.c
  210. #   7573 -rw-r----- dmake/os2/runargv.c
  211. #    384 -rw-r----- dmake/os2/startup.h
  212. #    373 -rw-r----- dmake/os2/stdarg.h
  213. #    904 -rw-r----- dmake/os2/switchar.c
  214. #    333 -rw-r----- dmake/os2/sysintf.h
  215. #   5291 -rw-r----- dmake/parse.c
  216. #     88 -rw-r----- dmake/patchlvl.h
  217. #   3076 -rw-r----- dmake/path.c
  218. #   7063 -rw-r----- dmake/percent.c
  219. #   2196 -rw-r----- dmake/quit.c
  220. #   1957 -rw-r----- dmake/readme/apple.mac
  221. #    626 -rw-r----- dmake/readme/atari.tos
  222. #   2332 -rw-r----- dmake/readme/cover
  223. #   5991 -rw-r----- dmake/readme/msdos
  224. #   5665 -rw-r----- dmake/readme/os2
  225. #   4694 -rw-r----- dmake/readme/release
  226. #  39571 -rw-r----- dmake/rulparse.c
  227. #   7774 -rw-r----- dmake/stat.c
  228. #   5527 -rw-r----- dmake/state.c
  229. #   1985 -rw-r----- dmake/stdmacs.h
  230. #   9761 -rw-r----- dmake/struct.h
  231. #  15102 -rw-r----- dmake/sysintf.c
  232. #  13303 -rw-r----- dmake/tos/arlib.c
  233. #   2029 -rw-r----- dmake/tos/config.h
  234. #   1262 -rw-r----- dmake/tos/config.mk
  235. #   1890 -rw-r----- dmake/tos/dirbrk.c
  236. #   1480 -rw-r----- dmake/tos/make.sh
  237. #   5487 -rw-r----- dmake/tos/public.h
  238. #   2932 -rw-r----- dmake/tos/putenv.c
  239. #   1725 -rw-r----- dmake/tos/rmprq.c
  240. #   1966 -rw-r----- dmake/tos/ruletab.c
  241. #   2709 -rw-r----- dmake/tos/runargv.c
  242. #    392 -rw-r----- dmake/tos/startup.h
  243. #   3239 -rw-r----- dmake/tos/startup.mk
  244. #    441 -rw-r----- dmake/tos/sysintf.h
  245. #   1506 -rw-r----- dmake/tos/tempnam.c
  246. #     46 -rw-r----- dmake/unix/386ix/ar.h
  247. #   2106 -rw-r----- dmake/unix/386ix/config.h
  248. #    745 -rw-r----- dmake/unix/386ix/config.mk
  249. #   2126 -rw-r----- dmake/unix/386ix/make.sh
  250. #   5448 -rw-r----- dmake/unix/386ix/public.h
  251. #   3227 -rw-r----- dmake/unix/386ix/startup.mk
  252. #    373 -rw-r----- dmake/unix/386ix/stdarg.h
  253. #    346 -rw-r----- dmake/unix/386ix/stdlib.h
  254. #    133 -rw-r----- dmake/unix/386ix/time.h
  255. #  14476 -rw-r----- dmake/unix/arlib.c
  256. #   2250 -rw-r----- dmake/unix/bsd43/config.h
  257. #    796 -rw-r----- dmake/unix/bsd43/config.mk
  258. #   2489 -rw-r----- dmake/unix/bsd43/make.sh
  259. #   5448 -rw-r----- dmake/unix/bsd43/public.h
  260. #   2939 -rw-r----- dmake/unix/bsd43/putenv.c
  261. #   1590 -rw-r----- dmake/unix/bsd43/setvbuf.c
  262. #   3227 -rw-r----- dmake/unix/bsd43/startup.mk
  263. #    409 -rw-r----- dmake/unix/bsd43/stdarg.h
  264. #    346 -rw-r----- dmake/unix/bsd43/stdlib.h
  265. #    292 -rw-r----- dmake/unix/bsd43/string.h
  266. #   1506 -rw-r----- dmake/unix/bsd43/tempnam.c
  267. #    808 -rw-r----- dmake/unix/bsd43/utime.c
  268. #    521 -rw-r----- dmake/unix/bsd43/uw/config.mk
  269. #   2977 -rw-r----- dmake/unix/bsd43/uw/make.sh
  270. #   5448 -rw-r----- dmake/unix/bsd43/uw/public.h
  271. #   3245 -rw-r----- dmake/unix/bsd43/uw/startup.mk
  272. #    317 -rw-r----- dmake/unix/bsd43/vf/config.mk
  273. #    782 -rw-r----- dmake/unix/bsd43/vf/ctype.h
  274. #   3196 -rw-r----- dmake/unix/bsd43/vf/make.sh
  275. #    137 -rw-r----- dmake/unix/bsd43/vf/memcpy.c
  276. #   5448 -rw-r----- dmake/unix/bsd43/vf/public.h
  277. #   3227 -rw-r----- dmake/unix/bsd43/vf/startup.mk
  278. #   1409 -rw-r----- dmake/unix/bsd43/vf/vfprintf.c
  279. #   1972 -rw-r----- dmake/unix/coherent/config.h
  280. #    765 -rw-r----- dmake/unix/coherent/config.mk
  281. #    306 -rw-r----- dmake/unix/coherent/getcwd.c
  282. #   2405 -rw-r----- dmake/unix/coherent/make.sh
  283. #   5448 -rw-r----- dmake/unix/coherent/public.h
  284. #   3227 -rw-r----- dmake/unix/coherent/startup.mk
  285. #    469 -rw-r----- dmake/unix/coherent/stdarg.h
  286. #    346 -rw-r----- dmake/unix/coherent/stdlib.h
  287. #    133 -rw-r----- dmake/unix/coherent/time.h
  288. #   4312 -rw-r----- dmake/unix/coherent/vfprintf.c
  289. #   1031 -rw-r----- dmake/unix/config.mk
  290. #   1821 -rw-r----- dmake/unix/dirbrk.c
  291. #   3513 -rw-r----- dmake/unix/explode.c
  292. #   3643 -rw-r----- dmake/unix/rmprq.c
  293. #   1948 -rw-r----- dmake/unix/ruletab.c
  294. #   6767 -rw-r----- dmake/unix/runargv.c
  295. #    412 -rw-r----- dmake/unix/startup.h
  296. #    441 -rw-r----- dmake/unix/sysintf.h
  297. #   2107 -rw-r----- dmake/unix/sysvr1/config.h
  298. #    761 -rw-r----- dmake/unix/sysvr1/config.mk
  299. #   2251 -rw-r----- dmake/unix/sysvr1/make.sh
  300. #   5448 -rw-r----- dmake/unix/sysvr1/public.h
  301. #   2940 -rw-r----- dmake/unix/sysvr1/putenv.c
  302. #   3285 -rw-r----- dmake/unix/sysvr1/startup.mk
  303. #    430 -rw-r----- dmake/unix/sysvr1/stdarg.h
  304. #    346 -rw-r----- dmake/unix/sysvr1/stdlib.h
  305. #    133 -rw-r----- dmake/unix/sysvr1/time.h
  306. #    934 -rw-r----- dmake/unix/sysvr1/vfprintf.c
  307. #   2219 -rw-r----- dmake/unix/sysvr3/config.h
  308. #    750 -rw-r----- dmake/unix/sysvr3/config.mk
  309. #   2153 -rw-r----- dmake/unix/sysvr3/make.sh
  310. #   5448 -rw-r----- dmake/unix/sysvr3/public.h
  311. #    559 -rw-r----- dmake/unix/sysvr3/pwd/config.mk
  312. #   5834 -rw-r----- dmake/unix/sysvr3/pwd/getcwd.c
  313. #   2739 -rw-r----- dmake/unix/sysvr3/pwd/make.sh
  314. #   5448 -rw-r----- dmake/unix/sysvr3/pwd/public.h
  315. #   3227 -rw-r----- dmake/unix/sysvr3/pwd/startup.mk
  316. #   3285 -rw-r----- dmake/unix/sysvr3/startup.mk
  317. #    469 -rw-r----- dmake/unix/sysvr3/stdarg.h
  318. #    428 -rw-r----- dmake/unix/sysvr3/stdlib.h
  319. #    133 -rw-r----- dmake/unix/sysvr3/time.h
  320. #   2123 -rw-r----- dmake/unix/sysvr4/config.h
  321. #    750 -rw-r----- dmake/unix/sysvr4/config.mk
  322. #   2153 -rw-r----- dmake/unix/sysvr4/make.sh
  323. #   5448 -rw-r----- dmake/unix/sysvr4/public.h
  324. #   3285 -rw-r----- dmake/unix/sysvr4/startup.mk
  325. #    869 -rw-r----- dmake/unix/sysvr4/stdarg.h
  326. #   2213 -rw-r----- dmake/unix/xenix/config.h
  327. #    760 -rw-r----- dmake/unix/xenix/config.mk
  328. #   2386 -rw-r----- dmake/unix/xenix/make.sh
  329. #   5448 -rw-r----- dmake/unix/xenix/public.h
  330. #    623 -rw-r----- dmake/unix/xenix/pwd/config.mk
  331. #   5834 -rw-r----- dmake/unix/xenix/pwd/getcwd.c
  332. #   2957 -rw-r----- dmake/unix/xenix/pwd/make.sh
  333. #   5448 -rw-r----- dmake/unix/xenix/pwd/public.h
  334. #   3227 -rw-r----- dmake/unix/xenix/pwd/startup.mk
  335. #   3285 -rw-r----- dmake/unix/xenix/startup.mk
  336. #    469 -rw-r----- dmake/unix/xenix/stdarg.h
  337. #    428 -rw-r----- dmake/unix/xenix/stdlib.h
  338. #    133 -rw-r----- dmake/unix/xenix/time.h
  339. #     53 -rw-r----- dmake/version.h
  340. #   4831 -rw-r----- dmake/vextern.h
  341. #  12487 -rw-r----- dmake/LICENSE
  342. #
  343. if test -r _shar_seq_.tmp; then
  344.     echo 'Must unpack archives in sequence!'
  345.     echo Please unpack part `cat _shar_seq_.tmp` next
  346.     exit 1
  347. fi
  348. # ============= dmake/_install ==============
  349. if test ! -d 'dmake'; then
  350.     mkdir 'dmake'
  351. fi
  352. if test -f 'dmake/_install' -a X"$1" != X"-c"; then
  353.     echo 'x - skipping dmake/_install (File already exists)'
  354.     rm -f _shar_wnt_.tmp
  355. else
  356. > _shar_wnt_.tmp
  357. sed 's/^X//' << 'SHAR_EOF' > 'dmake/_install' &&
  358. INSTALLATION INSTRUCTIONS
  359. X
  360. This file contains the instructions required to install and create the
  361. appropriate version of dmake.
  362. X
  363. NOTE:  If you use dmake to bootstrap a NEW DISTRIBUTED version or to remake
  364. X       it after applying a PATCH, it may be NECESSARY to use the batch
  365. X       script instead of dmake as a patch may incorporate changes to the
  366. X       makefile.mk file and associated config.mk files that cannot be
  367. X       handled by earlier versions of dmake.  The use of the batch files
  368. X       is the ONLY supported method of making a new release or update
  369. X       version.
  370. X
  371. MAKING THE PROPER VERSION
  372. X
  373. The list of available versions of dmake has grown quite large.  The best
  374. method to determine what versions are available for your configuration is to
  375. simply issue the command 'make' in the source root directory.  Below is a
  376. partial list of the available versions to give an idea of what is supported.
  377. Note that this copy of the list is not maintained up to date.
  378. X
  379. X    bsd43       - Generic BSD 4.3 (eg, true BSD, apollo, Sun OS4, SGI etc)
  380. X    bsd43uw       - Generic BSD 4.3 at U of Waterloo
  381. X    bsd43vf       - Generic BSD with no vfprintf in its library  (use this
  382. X             target if you are missing the vfprintf function in your
  383. X             C library)
  384. X    sysvr3       - Generic SysV R3 UNIX
  385. X    sysvr1       - Generic SysV R1 UNIX
  386. X    386ix      - 386/ix (SysV R3), not tested
  387. X    dynix      - Sequent Symmetry dynix
  388. X    ultrix       - Ultrix 3.0 system
  389. X    mips       - Any MIPS box
  390. X        os2msc60   - OS/2 with MSC 6.0
  391. X    tos        - Atari-ST using GCC as compiler
  392. X        tcc        - DOS with tcc 2.0
  393. X        tccswp     - swapping DOS version with tcc 2.0
  394. X        msc60      - DOS with MSC 6.0
  395. X        msc60swp   - swapping DOS version with MSC 6.0
  396. X
  397. The file 'makefile' understands these targets and runs the appropriate script
  398. to create the correct version.
  399. X
  400. The source code is organized as follows:
  401. X
  402. X            dmake         [source for all common functions]
  403. X              |
  404. X              |
  405. X        ----------------------------
  406. X        |       |          |          |
  407. X       unix   tos      os2       msdos  [source for OS specific functions]
  408. X        |                |          |
  409. X  --------------------    mscdos    -------------------
  410. X  |         |        |              |       |         |
  411. 386ix     bsd43  sysvr[134]      tccdos   bccdos   mscdos  [source for OSRELEASE
  412. X        |                                      specific functions] 
  413. X    --------
  414. X    |      |
  415. X       uw      vf   [source for OSENVIRONMENT specific functions]
  416. X
  417. X
  418. Each of the directories (eg. bsd43, mscdos, tccdos, and sysvr3) contain source
  419. that is specific to that release of the OS (and possibly C-library)
  420. To make the appropriate versions of dmake, simply type the command
  421. X
  422. X    'make system'
  423. X
  424. where system is one of the supplied possibilities.  Note that if you are using
  425. an earlier version of dmake to make a new version from scratch then you must
  426. use the command:
  427. X
  428. X    'dmake -f makefile system'
  429. X
  430. as dmake by default first reads makefile.mk and would thus use the wrong
  431. makefile for bootstrapping purposes.
  432. X
  433. The bootstrapping of dmake is accomplished by running a shell script with the
  434. appropriate compile commands hard coded.
  435. X
  436. (NOTE:  If you are using MSDOS then, you will actually be using the make.bat
  437. X    scriptfile to make the correct version of dmake for MSDOS.  If you
  438. X    are running a SHELL other than command.com, you may have to perform
  439. X    some extra work to invoke the batch file.
  440. X    
  441. X    Make sure you read the readme/msdos file before attempting to make the
  442. X    MSDOS version, as it contains important configuration and limitation
  443. X    information.)
  444. X
  445. The making of dmake, echoes the commands being executed, and should proceed
  446. relatively error free.  Ignore ANY warnings produced by the compile
  447. They have all be verified and are spurious noise.
  448. X
  449. UNIX SYSV R3 AND GETCWD
  450. X
  451. Some versions of UNIX SysV R3 and Xenix use the popen call to capture the
  452. output of pwd when invoking the C library function getcwd().  These versions
  453. of the function cause dmake to terminate with the "lost a child" message
  454. due to the fact that the parent dmake process may catch the pwd and not
  455. recognize it as a child.  For systems that have this problem use the version
  456. of dmake that supplies its own getcwd function.  The settings are:
  457. X
  458. X   OS = unix
  459. X   OSRELEASE = sysvr3
  460. X   OSENVIRONMENT = pwd
  461. X
  462. It is directly available through the 'makefile' by typing one of:
  463. X
  464. X   make sysvr3pwd
  465. X   make xenixpwd
  466. X
  467. both include the getcwd code but the xenixpwd target compiles for a Xenix
  468. system.
  469. X
  470. X
  471. UNIX and "limits.h"
  472. X
  473. Some compilers do not yet provide the "limits.h" file, if yours is one of
  474. these then simply copy the file "namemax.h" in the source root directory to
  475. "limits.h".  Make sure the length of a file name is correctly set in
  476. "limits.h" as it is processed prior to "namemax.h".
  477. X
  478. X
  479. STARTUP FILE
  480. X
  481. dmake requires the loading of a startup file when it is invoked.  The
  482. path for the startup file is set in the file 'startup.h' found in the
  483. appropriate system sub-directories.  You may override the value of the
  484. path variable compiled-in by creating a file at the root source directory
  485. called startup.h and inserting into that file a definition that is like
  486. the definition found in the supplied startup.h files.  Alternatively you
  487. can modify the MAKESTARTUP environment variable to point at the location
  488. of your startup.mk file.
  489. X
  490. X
  491. INSTALLATION
  492. X
  493. To install dmake you must copy the executable to where your system
  494. locates executables, and you must place a copy of startup.mk (found in the
  495. root source directory after the build is successfuly completed) into a location
  496. corresponding to the value of the MAKESTARTUP macro or environment variable.
  497. You are free to customize the contents of startup.mk.
  498. X
  499. To make dmake again, (using itself), you will have to set three environment
  500. variables.  See the files in readme/options for their names and their legal
  501. values.  Once set you can invoke dmake to make itself.
  502. X
  503. X
  504. DOCUMENTATION
  505. X
  506. All documentation for dmake appears under the man directory.
  507. The file dmake.tf included in this distribution contains the troff
  508. source for the man page.  You must typeset it using the -man macros.
  509. If you cannot typeset it, the file dmake.p is a version that has been
  510. typeset for a normal dumb terminal.  The file dmake.p contains control
  511. characters.  The file dmake.nc is a version of the man page that has
  512. all of the control characters stripped.
  513. X
  514. X
  515. CREATING A NEW VERSION
  516. X
  517. To create yet another version of dmake you should follow the following steps.
  518. X
  519. The sysvr3 version as sent is the base version, all dmake versions must provide
  520. the equivalent of the functions defined in the sysvr3 directory, and MUST
  521. provide the same semantics (MSDOS archive lib searches are an exception since
  522. we cannot search libraries for timestamps in MSDOS, Actually the MKS version
  523. of dmake does this, I don't have the inclination to add this code though).
  524. X
  525. 1. Create a new directory for the version you will be making at the level
  526. X   that is appropriate.  If it is a new OS then add the dir at the top level,
  527. X   if it is a new version of UNIX then add it below the unix directory.
  528. X
  529. 2. Copy the files from the unix and unix/sysvr3 directories to the new dir.
  530. X   (Or from any other directory sub-tree that is more appropriate)
  531. X
  532. 3. Not all OS/OSRELEASE combinations are compatible so in order to make
  533. X   dmake on each, the particular directory may contain C-source for functions
  534. X   present in the SVID SysV R3 distribution which are used by dmake but are
  535. X   not supplied by the C-library in the target system.  For example the bsd43
  536. X   directory contains source for tempnam.c since it is not provided with
  537. X   the BSD C-library.  Before writing a new version of the source file
  538. X   check the other directories to see if one already exists.
  539. X
  540. 4. Under some systems the standard include files may be missing or incorrect.
  541. X   eg. under BSD stdarg.h and string.h.  If this is the case
  542. X   you should create the proper .h file in the proper directory.
  543. X   This works as expected as the compile line includes the flag -Idir
  544. X   where dir is the configuration dir, (bsd43 for example) and any
  545. X   standard include files will be searched for in dir before the compiler
  546. X   looks in the normal places (if you have a sane compiler :-).
  547. X
  548. 5. Modify dmake.sh to contain the appropriate C compiler flags and link command
  549. X   and to include any specific C files that you have had to add for this
  550. X   version of dmake, and run the result through the shell.
  551. X   (make the same changes to config.mk so that once you have a working copy of
  552. X   dmake you can use it to bring itself up to date)
  553. X
  554. 6. Send me the changes :-) so that I can incorporate them into future
  555. X   distributions.
  556. X
  557. 7. This should be all that you require to create a new version of dmake.
  558. X   If you have any questions send e-mail to dvadura@plg.uwaterloo.ca
  559. SHAR_EOF
  560. chmod 0640 dmake/_install ||
  561. echo 'restore of dmake/_install failed'
  562. Wc_c="`wc -c < 'dmake/_install'`"
  563. test 8714 -eq "$Wc_c" ||
  564.     echo 'dmake/_install: original size 8714, current size' "$Wc_c"
  565. rm -f _shar_wnt_.tmp
  566. fi
  567. # ============= dmake/alloc.h ==============
  568. if test -f 'dmake/alloc.h' -a X"$1" != X"-c"; then
  569.     echo 'x - skipping dmake/alloc.h (File already exists)'
  570.     rm -f _shar_wnt_.tmp
  571. else
  572. > _shar_wnt_.tmp
  573. sed 's/^X//' << 'SHAR_EOF' > 'dmake/alloc.h' &&
  574. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/RCS/alloc.h,v 1.1 1992/01/24 03:26:54 dvadura Exp $
  575. -- SYNOPSIS -- macros for allocating memory.
  576. -- 
  577. -- DESCRIPTION
  578. --    A somewhat nicer interface to malloc and calloc.
  579. --    Here we standardise the calling convention with a common macro
  580. --    interface.
  581. -- 
  582. -- AUTHOR
  583. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  584. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  585. --
  586. -- COPYRIGHT
  587. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  588. -- 
  589. --      This program is free software; you can redistribute it and/or
  590. --      modify it under the terms of the GNU General Public License
  591. --      (version 1), as published by the Free Software Foundation, and
  592. --      found in the file 'LICENSE' included with this distribution.
  593. -- 
  594. --      This program is distributed in the hope that it will be useful,
  595. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  596. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  597. --      GNU General Public License for more details.
  598. -- 
  599. --      You should have received a copy of the GNU General Public License
  600. --      along with this program;  if not, write to the Free Software
  601. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  602. --
  603. -- LOG
  604. --     $Log: alloc.h,v $
  605. X * Revision 1.1  1992/01/24  03:26:54  dvadura
  606. X * dmake Version 3.8, Initial revision
  607. X *
  608. */
  609. X
  610. #ifndef ALLOC_h
  611. #define ALLOC_h
  612. X
  613. /* DO NOT CHANGE these!  These are the definitions that the make source
  614. X * uses for allocating memory.  They must be defined for make to compile
  615. X * properly.
  616. X */
  617. X
  618. /* This is the only place that we define size_t now.  This should be more
  619. X * than enough! */
  620. #if __STDC__
  621. #else
  622. #   if !defined(_TYPES_) && !defined(M_XENIX) && !defined(atarist) && !defined(_MPW) && !defined(_SIZE_T)
  623. #      if defined(MSDOS) || defined(__MSDOS__)
  624. #         undef size_t
  625. X          typedef unsigned size_t;
  626. #      else
  627. X          typedef long size_t;
  628. #      endif
  629. #   endif
  630. #endif
  631. X
  632. #define    usizeof(t)    (size_t)sizeof(t)
  633. X
  634. #define FREE(p)         free((char*)(p))
  635. #define MALLOC(n, t)    (t*) malloc((unsigned int)(n)*usizeof(t))
  636. #define CALLOC(n, t)    (t*) calloc((unsigned int)(n), usizeof(t))
  637. X
  638. #define TALLOC(p, n, t)    if ((p = CALLOC(n, t)) == (t*)0) {No_ram();}
  639. X
  640. #endif
  641. X
  642. SHAR_EOF
  643. chmod 0640 dmake/alloc.h ||
  644. echo 'restore of dmake/alloc.h failed'
  645. Wc_c="`wc -c < 'dmake/alloc.h'`"
  646. test 2297 -eq "$Wc_c" ||
  647.     echo 'dmake/alloc.h: original size 2297, current size' "$Wc_c"
  648. rm -f _shar_wnt_.tmp
  649. fi
  650. # ============= dmake/basename.c ==============
  651. if test -f 'dmake/basename.c' -a X"$1" != X"-c"; then
  652.     echo 'x - skipping dmake/basename.c (File already exists)'
  653.     rm -f _shar_wnt_.tmp
  654. else
  655. > _shar_wnt_.tmp
  656. sed 's/^X//' << 'SHAR_EOF' > 'dmake/basename.c' &&
  657. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/RCS/basename.c,v 1.1 1992/01/24 03:26:56 dvadura Exp $
  658. -- SYNOPSIS -- return pointer to last pathname component
  659. -- 
  660. -- DESCRIPTION
  661. --    take a file name like /fred/foo/hoe/mary.k, and return the 'mary.k'
  662. --    portion
  663. -- 
  664. -- AUTHOR
  665. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  666. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  667. --
  668. -- COPYRIGHT
  669. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  670. -- 
  671. --      This program is free software; you can redistribute it and/or
  672. --      modify it under the terms of the GNU General Public License
  673. --      (version 1), as published by the Free Software Foundation, and
  674. --      found in the file 'LICENSE' included with this distribution.
  675. -- 
  676. --      This program is distributed in the hope that it will be useful,
  677. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  678. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  679. --      GNU General Public License for more details.
  680. -- 
  681. --      You should have received a copy of the GNU General Public License
  682. --      along with this program;  if not, write to the Free Software
  683. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  684. --
  685. -- LOG
  686. --     $Log: basename.c,v $
  687. X * Revision 1.1  1992/01/24  03:26:56  dvadura
  688. X * dmake Version 3.8, Initial revision
  689. X *
  690. */
  691. X
  692. #include "extern.h"
  693. X
  694. PUBLIC char*
  695. basename( path )
  696. char *path;
  697. {
  698. X   char *p;
  699. X   char *q;
  700. X
  701. X   if( *(q = path) ) {
  702. X      for(; *(p=_strpbrk(q, DirBrkStr)) != '\0'; q = p+1 );
  703. X      if( !*q ) {
  704. X     for( p=q-1; p != path; --p )
  705. X        if( strchr( DirBrkStr, *p ) == NIL(char) ) return( p+1 );
  706. X     return( strchr(DirBrkStr, *p)?path:(p+1) );
  707. X      }
  708. X      path = q;
  709. X   }
  710. X   return( path );
  711. }
  712. SHAR_EOF
  713. chmod 0640 dmake/basename.c ||
  714. echo 'restore of dmake/basename.c failed'
  715. Wc_c="`wc -c < 'dmake/basename.c'`"
  716. test 1762 -eq "$Wc_c" ||
  717.     echo 'dmake/basename.c: original size 1762, current size' "$Wc_c"
  718. rm -f _shar_wnt_.tmp
  719. fi
  720. # ============= dmake/dag.c ==============
  721. if test -f 'dmake/dag.c' -a X"$1" != X"-c"; then
  722.     echo 'x - skipping dmake/dag.c (File already exists)'
  723.     rm -f _shar_wnt_.tmp
  724. else
  725. > _shar_wnt_.tmp
  726. sed 's/^X//' << 'SHAR_EOF' > 'dmake/dag.c' &&
  727. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/RCS/dag.c,v 1.1 1992/01/24 03:26:55 dvadura Exp $
  728. -- SYNOPSIS -- Routines to construct the internal dag.
  729. -- 
  730. -- DESCRIPTION
  731. --    This file contains all the routines that are responsible for
  732. --    defining and manipulating all objects used by the make facility.
  733. -- 
  734. -- AUTHOR
  735. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  736. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  737. --
  738. -- COPYRIGHT
  739. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  740. -- 
  741. --      This program is free software; you can redistribute it and/or
  742. --      modify it under the terms of the GNU General Public License
  743. --      (version 1), as published by the Free Software Foundation, and
  744. --      found in the file 'LICENSE' included with this distribution.
  745. -- 
  746. --      This program is distributed in the hope that it will be useful,
  747. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  748. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  749. --      GNU General Public License for more details.
  750. -- 
  751. --      You should have received a copy of the GNU General Public License
  752. --      along with this program;  if not, write to the Free Software
  753. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  754. --
  755. -- LOG
  756. --     $Log: dag.c,v $
  757. X * Revision 1.1  1992/01/24  03:26:55  dvadura
  758. X * dmake Version 3.8, Initial revision
  759. X *
  760. */
  761. X
  762. #include "extern.h"
  763. X
  764. X
  765. PUBLIC HASHPTR
  766. Get_name( name, tab, define )/*
  767. ===============================
  768. X    Look to see if the name is defined, if it is then return
  769. X    a pointer to its node, if not return NIL(HASH).
  770. X    If define is TRUE and the name is not found it will be added. */
  771. X
  772. char    *name;            /* name we are looking for   */
  773. HASHPTR *tab;            /* the hash table to look in */
  774. int    define;            /* TRUE => add to table      */
  775. {
  776. X   register HASHPTR hp;
  777. X   register char    *p;
  778. X   uint16           hv;
  779. X   uint32           hash_key;
  780. X
  781. X   DB_ENTER( "Get_name" );
  782. X   DB_PRINT( "name", ("Looking for %s", name) );
  783. X
  784. X   hp = Search_table( tab, name, &hv, &hash_key );
  785. X
  786. X   if( hp == NIL(HASH) && define ) {
  787. X      /* Check to make sure that CELL name contains only printable chars */
  788. X      for( p=name; *p; p++ )
  789. X     if( !isprint(*p) && !iswhite(*p) && *p != '\n' )
  790. X        Fatal( "Name contains non-printable character [0x%02x]", *p );
  791. X
  792. X      TALLOC( hp, 1, HASH );        /* allocate a cell and add it in */
  793. X
  794. X      hp->ht_name  = _strdup( name );
  795. X      hp->ht_hash  = hash_key;
  796. X      hp->ht_next  = tab[ hv ];
  797. X      tab[ hv ]    = hp;
  798. X
  799. X      DB_PRINT( "name", ("Adding %s", name) );
  800. X   }
  801. X
  802. X   DB_PRINT( "name",("Returning: [%s,%lu]",
  803. X         (hp == NIL(HASH)) ? "":hp->ht_name, hv) );
  804. X   DB_RETURN( hp );
  805. }
  806. X
  807. X
  808. PUBLIC HASHPTR
  809. Search_table( tab, name, phv, phkey )
  810. HASHPTR *tab;
  811. char    *name;
  812. uint16  *phv;
  813. uint32  *phkey;
  814. {
  815. X   HASHPTR hp;
  816. X
  817. X   *phv = Hash( name, phkey );
  818. X
  819. X   for( hp = tab[ *phv ]; hp != NIL(HASH); hp = hp->ht_next )
  820. X      if(    hp->ht_hash == *phkey
  821. X      && !strcmp(hp->ht_name, name) )
  822. X         break;
  823. X
  824. X   return( hp );
  825. }
  826. X
  827. X
  828. PUBLIC HASHPTR
  829. Def_macro( name, value, flags )/*
  830. =================================
  831. X   This routine is used to define a macro, and it's value.
  832. X   The flags indicates if it is a permanent macro or if it's value
  833. X   can be redefined.  A flags of M_PRECIOUS means it is a precious
  834. X   macro and cannot be further redefined.  If the flags flag also
  835. X   contains the M_MULTI bit it means that the macro can be redefined
  836. X   multiple times and no warning of the redefinitions should be issued.
  837. X   Once a macro's VAR flags are set they are preserved through all future
  838. X   macro definitions.
  839. X   
  840. X   Macro definitions that have one of the variable bits set are treated
  841. X   specially.  In each case the hash table entry var field points at the
  842. X   global variable that can be set by assigning to the macro.
  843. X   
  844. X   bit valued global vars must be computed when the macro value is changed.
  845. X   char valued global vars must have the first char of ht_value copied to
  846. X   them.  string valued global vars have the same value as ht_value and should
  847. X   just have the new value of ht_value copied to them.  */
  848. X
  849. char    *name;            /* macro name to define    */
  850. char    *value;            /* macro value to set    */
  851. int     flags;            /* initial ht_flags    */
  852. {
  853. X   register HASHPTR   hp;
  854. X   register char      *p, *q;
  855. X
  856. X   DB_ENTER( "Def_macro" );
  857. X   DB_PRINT( "mac", ("Defining macro %s = %s, %x", name, value, flags) );
  858. X
  859. X   /* check to see if name is in the table, if so then just overwrite
  860. X      the previous definition.  Otherwise allocate a new node, and
  861. X      stuff it in the hash table, at the front of any linked list */
  862. X
  863. X   if( Readenv ) flags |= M_LITERAL|M_EXPANDED;
  864. X
  865. X   hp = Get_name( name, Macs, TRUE );
  866. X
  867. X   if( (hp->ht_flag & M_PRECIOUS) && !(flags & M_FORCE) ) {
  868. X      Warning( "Macro `%s' cannot be redefined", name );
  869. X      DB_RETURN( hp );
  870. X   }
  871. X
  872. X   /* Make sure we don't export macros whose names contain legal macro
  873. X    * assignment operators, since we can't do proper quoting in the
  874. X    * environment. */
  875. X   if( *_strpbrk(name, "*+:=") != '\0' ) flags |= M_NOEXPORT;
  876. X
  877. X   if( hp->ht_value != NIL(char) ) FREE( hp->ht_value );
  878. X
  879. X   if( (hp->ht_flag & M_USED) && !((flags | hp->ht_flag) & M_MULTI) )
  880. X      Warning( "Macro `%s' redefined after use", name );
  881. X
  882. X   if( (value != NIL(char)) && (*value) ) {
  883. X      /* strip out any \<nl> combinations where \ is the current CONTINUATION
  884. X       * char */
  885. X
  886. X      for( p = value; (p = strchr(p, CONTINUATION_CHAR)) != NIL(char); )
  887. X         if( p[1] == '\n' )
  888. X        strcpy( p, p+2 );
  889. X     else
  890. X        p++;
  891. X
  892. X      if( !(flags & M_LITERAL) ) {
  893. X     p = _strdup( _strspn( value, " \t" ) ); /* strip white space before */
  894. X                         /* ... and after value         */
  895. X     if( *p ) {
  896. X        for(q=p+strlen(p)-1; ((*q == ' ')||(*q == '\t')); q--);
  897. X        *++q = '\0';
  898. X     }
  899. X     flags &= ~M_LITERAL;
  900. X      }
  901. X      else
  902. X     p = _strdup( value );               /* take string literally   */
  903. X      
  904. X      if( !*p )    {                /* check if result is ""   */
  905. X         FREE( p );
  906. X         p = NIL(char);
  907. X     flags |= M_EXPANDED;
  908. X      }
  909. X      else if( *_strpbrk( p, "${}" ) == '\0' )
  910. X     flags |= M_EXPANDED;
  911. X
  912. X      hp->ht_value = p;
  913. X   }
  914. X   else
  915. X      hp->ht_value = NIL(char);
  916. X
  917. X   /* Assign the hash table flag less the M_MULTI flag, it is used only
  918. X    * to silence the warning.  But carry it over if it was previously
  919. X    * defined in ht_flag, as this is a permanent M_MULTI variable. */
  920. X
  921. X   hp->ht_flag = (flags & ~(M_MULTI|M_FORCE)) |
  922. X         (hp->ht_flag & (M_VAR_MASK | M_MULTI));
  923. X   
  924. X   /* Check for macro variables and make the necessary adjustment in the
  925. X    * corresponding global variables */
  926. X    
  927. X   if( hp->ht_flag & M_VAR_MASK )
  928. X      if( !(flags & M_EXPANDED) )
  929. X     Error( "Macro variable '%s' must be assigned with :=", name );
  930. X      else switch( hp->ht_flag & M_VAR_MASK )    /* only one var type per var */
  931. X      {
  932. X     case M_VAR_STRING:
  933. X        *hp->MV_SVAR = hp->ht_value;
  934. X        break;
  935. X
  936. X     case M_VAR_CHAR:
  937. X        *hp->MV_CVAR = (hp->ht_value == NIL(char)) ? '\0':*hp->ht_value;
  938. X        break;
  939. X  
  940. X     case M_VAR_INT: {
  941. X        int tvalue;
  942. X        if( hp->MV_IVAR == NIL(int) ) break;    /* first time */
  943. X
  944. X        tvalue = atoi(hp->ht_value);
  945. X        if( hp->MV_IVAR == &Buffer_size ) {
  946. X           /* If Buffer_size is modified then make sure you change the
  947. X            * size of the real buffer as well. */
  948. X           tvalue = (tvalue < (BUFSIZ-2)) ? BUFSIZ : tvalue+2;
  949. X           if( Buffer_size == tvalue ) break;
  950. X           if( Buffer ) FREE(Buffer);
  951. X           if((Buffer=MALLOC(tvalue, char)) == NIL(char)) No_ram();
  952. X           *Buffer = '\0';
  953. X        }
  954. X        *hp->MV_IVAR = tvalue;
  955. X
  956. X        if( hp->MV_IVAR == &Max_proc || hp->MV_IVAR == &Max_proclmt ) {
  957. X           if( tvalue < 1 )
  958. X          Fatal( "Process limit value must be > 1" );
  959. X
  960. X           if( Max_proc > Max_proclmt )
  961. X          Fatal( "Specified # of processes exceeds limit of [%d]",
  962. X             Max_proclmt );
  963. X        }
  964. X     } break;
  965. X     case M_VAR_BIT:
  966. X        /* Bit variables are set to 1 if ht_value is not NULL and 0
  967. X         * otherwise */
  968. X         
  969. X        if( hp->ht_value == NIL(char) )
  970. X           *hp->MV_BVAR &= ~hp->MV_MASK;
  971. X        else
  972. X           *hp->MV_BVAR |= hp->MV_MASK;
  973. X        break;
  974. X      }
  975. X   
  976. X   DB_RETURN( hp );
  977. }
  978. X
  979. X
  980. X
  981. PUBLIC CELLPTR
  982. Def_cell( name )/*
  983. ==================
  984. X   Take a string passed in and define it as a cell
  985. X   If the cell exists then return a pointer to it. */
  986. char    *name;
  987. {
  988. X   register HASHPTR  hp;
  989. X   register CELLPTR  cp;
  990. X   register CELLPTR  lib;
  991. X   char             *member;
  992. X   char             *end;
  993. X
  994. X   DB_ENTER( "Def_cell" );
  995. X
  996. X   /* Check to see if the cell is a member of the form lib(member) or
  997. X    * lib((symbol)) and handle the cases appropriately.
  998. X    * What we do is we look at the target, if it is of the above two
  999. X    * forms we get the lib, and add the member/symbol to the list of
  1000. X    * prerequisites for the library.  If this is a symbol name def'n
  1001. X    * we additionally add the attribute A_SYMBOL, so that stat can
  1002. X    * try to do the right thing.  */
  1003. X
  1004. X   if( ((member = strchr(name, '('))     != NIL(char)) &&
  1005. X       ((end    = strrchr(member,  ')')) != NIL(char)) &&
  1006. X       (member > name) && (member[-1] != '$') &&
  1007. X       (end > member+1)  && (end[1] == '\0') )
  1008. X   {
  1009. X      *member++ = *end = '\0';
  1010. X
  1011. X      if( (*member == '(') && (member[strlen(member)-1] == ')') ) {
  1012. X     member[ strlen(member)-1 ] = '\0';
  1013. X     cp = Def_cell( member+1 );
  1014. X     cp->ce_attr |= A_SYMBOL;
  1015. X      }
  1016. X      else
  1017. X     cp = Def_cell( member );
  1018. X
  1019. X      lib  = Def_cell( name );
  1020. X
  1021. X      Add_prerequisite( lib, cp, FALSE, FALSE );
  1022. X      lib->ce_attr |= A_LIBRARY | A_COMPOSITE;
  1023. X
  1024. X      if( !Def_targets ) cp = lib;
  1025. X   }
  1026. X   else {
  1027. X      hp = Get_name( name, Defs, TRUE );/* get the name from hash table */
  1028. X
  1029. X      if( hp->CP_OWNR == NIL(CELL) )    /* was it previously defined    */
  1030. X      {                    /* NO, so define a new cell    */
  1031. X     DB_PRINT( "cell", ("Defining cell [%s]", name) );
  1032. X
  1033. X     TALLOC( cp, 1, CELL );
  1034. X     hp->CP_OWNR = cp;
  1035. X     cp->ce_name = hp;
  1036. X     cp->ce_fname = hp->ht_name;
  1037. X      }
  1038. X      else                 /* YES, so return the old cell    */
  1039. X      {
  1040. X     DB_PRINT( "cell", ("Getting cell [%s]", hp->ht_name) );
  1041. X     cp = hp->CP_OWNR;
  1042. X      }
  1043. X   }
  1044. X
  1045. X   DB_RETURN( cp );
  1046. }
  1047. X
  1048. X
  1049. X
  1050. X
  1051. PUBLIC LINKPTR
  1052. Add_prerequisite( cell, prq, head, force )/*
  1053. ============================================
  1054. X    Add a dependency node to the dag.  It adds it to the prerequisites,
  1055. X    if any, of the cell and makes certain they are in linear order.
  1056. X    If head == 1, then add to head of the prerequisite list, else
  1057. X    add to tail. */
  1058. CELLPTR cell;
  1059. CELLPTR prq;
  1060. int     head;
  1061. int     force;
  1062. {
  1063. X   register LINKPTR lp, tlp;
  1064. X
  1065. X   DB_ENTER( "Add_prerequisite" );
  1066. X   DB_PRINT( "cell", ("Defining prerequisite %s", prq->CE_NAME) );
  1067. X
  1068. X   if( (prq->ce_flag & (F_MAGIC | F_PERCENT)) && !force )
  1069. X      Fatal( "Special target [%s] cannot be a prerequisite",
  1070. X             prq->CE_NAME );
  1071. X
  1072. X   if( cell->ce_prq == NIL(LINK) ) {    /* it's the first one    */
  1073. X      TALLOC( lp, 1, LINK );
  1074. X      lp->cl_prq   = prq;
  1075. X      cell->ce_prq = lp;
  1076. SHAR_EOF
  1077. true || echo 'restore of dmake/dag.c failed'
  1078. fi
  1079. echo 'End of part 1, continue with part 2'
  1080. echo 2 > _shar_seq_.tmp
  1081. exit 0
  1082. exit 0 # Just in case...
  1083.